#include "bsp_switch.h"

void SWITCH_GPIO_Config(void){
    GPIO_InitTypeDef GPIO_InitStructure;

    /* 使能GPIO时钟 */
    RCC_APB2PeriphClockCmd(SWITCH1_GPIO_CLK, ENABLE);

    /* 配置PA5为上拉输入 */
    GPIO_InitStructure.GPIO_Pin = SWITCH1_GPIO_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /* 若为低电平有效且外部已下拉，请改为 GPIO_Mode_IPD */
    GPIO_Init(SWITCH1_GPIO_PORT, &GPIO_InitStructure);
}

/* 简易消抖读取：多次采样取多数值 */
uint8_t SWITCH_Read(void){
    uint8_t cnt = 0;
    for (int i = 0; i < 5; i++){
        if (SWITCH_READ_RAW()){
            cnt++;
        }
    }
    return (cnt >= 3) ? SWITCH_OPEN : SWITCH_CLOSE;
}
